Software applications utilize many resources of a computer system to aid them in performing their functions. These resources can include libraries and routines that assist the operation of an application by performing functions that the application would otherwise have to perform itself. Other resources include an operating system, which can control the application's interaction with the computer system, and a registry. The registry is a central repository for a computer system. An application can store and retrieve information in the registry for access during the next session of the application.
The information maintained by the registry can become difficult to manage as a result of an increase in the number of program modules, such as application programs, which use the resources of a computer system. For example, registry information has grown in size and complexity in response to an increased use of computer resources by multiple program modules of the computer system. Representative examples of problems arising from the use of prior registry-implemented storage systems are described below to illustrate the need for an improved mechanism for accessing and retrieving registry information.
One registry problem is the fragmentation of registry information. For example, information about use of a registry is typically contained within the application's source code. Managing registry information on a high level has been difficult because moving data in the registry often required a direct change of this source code. Additionally, finding registry information in the source code by a developer has been difficult because this information is located in each instance that the application requests registry data.
Another registry problem is the universal implementation of registry features. For example, sometimes a registry feature should be implemented across all registry calls. If a system administrator inserts an environment variable into a registry value, it is expected that an end value will properly interpret the environment variable. Today, however, this requires that all registry calls add an additional check and a new code section. Because this modification can represent a major code change when thousands of registry calls are involved, only certain registry calls typically include this feature.
A third registry problem is the efficient implementation of administrator policy. Administrators typically use scripts to impose policy settings on users. If an administrator desires to impose policy settings on a permanent basis, then the entire user registry is locked down to read-only permissions. When the entire registry is locked down, however, a user's individual settings do not persist from session to session.
And yet another registry problem is the administration of an increased data set by the registry. Because registry data is written to the registry at during an application's setup, the registry is typically filled with many values that never change. If some of the keys for those values are deleted, however, the application cannot run on the computer system. Because tracking key and value usage is difficult, some values may become obsolete or unnecessary, and are no longer needed over time. This results in the creation of registry “bloat.” A determination of the values written by a set-up program or the values changed by a user is also difficult in the absence of an effective administration system for the registry.
And still another registry problem is the inefficient use of registry information by an application. Because registry information is typically scattered throughout the source code of an application, constant string data, such as registry key names, are often duplicated. One section of code can duplicate a significant number of characters when referencing a key name for a registry value. For thousands of registry entries, the performance of an application can be reduced by such duplicate code sections.
In view of the problems with prior registry operations, there is a need in the art for an improved mechanism for managing the registry. This improved registry management system would reduce fragmentation and support the consistent universal implementation of features and Administrator policy settings. This improved registry management system also would reduce registry bloat, while increasing the performance of an application that accesses the registry.